mir: reconstruct surface if window is moved
authorWilliam Hua <william@attente.ca>
Mon, 26 Jan 2015 23:29:07 +0000 (18:29 -0500)
committerWilliam Hua <william@attente.ca>
Thu, 5 Feb 2015 16:26:19 +0000 (17:26 +0100)
gdk/mir/gdkmirwindowimpl.c

index 4e0503ba174b6153886cae0a4fab27d3b61fa77c..5ecec56ba3e932d02713dd1f61ebdb188d93c7e9 100644 (file)
@@ -527,6 +527,7 @@ gdk_mir_window_impl_move_resize (GdkWindow *window,
   g_printerr ("\n");
   */
   GdkMirWindowImpl *impl = GDK_MIR_WINDOW_IMPL (window->impl);
+  gboolean recreate_surface = FALSE;
 
   /* Redraw parent where we moved from */
   if (should_render_in_parent (window))
@@ -540,10 +541,11 @@ gdk_mir_window_impl_move_resize (GdkWindow *window,
           window->x = x;
           window->y = y;
         }
-      else
+      else if (x != impl->transient_x || y != impl->transient_y)
         {
           impl->transient_x = x;
           impl->transient_y = y;
+          recreate_surface = TRUE;
         }
     }
 
@@ -553,14 +555,15 @@ gdk_mir_window_impl_move_resize (GdkWindow *window,
     /* We accept any resize */
     window->width = width;
     window->height = height;
-
-    if (impl->surface)
-      {
-        ensure_no_surface (window);
-        ensure_surface (window);
-      }
+    recreate_surface = TRUE;
   }
 
+  if (recreate_surface && impl->surface)
+    {
+      ensure_no_surface (window);
+      ensure_surface (window);
+    }
+
   /* Redraw parent where we moved to */
   if (should_render_in_parent (window))
     redraw_transient (window);